{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "1021.ipynb",
      "provenance": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/yananma/5_programs_per_day/blob/master/1021.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FGJ-YXDKa1xn",
        "colab_type": "text"
      },
      "source": [
        "## 1、Linear Regression(1)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n4Zp74z9bc_T",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "import matplotlib.pyplot as plt \n",
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YanVxfaacFQH",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_size = 1 \n",
        "output_size = 1 \n",
        "num_epochs = 3000 \n",
        "learning_rate = 0.001 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ix7guZgLdkMd",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = np.random.rand(256)\n",
        "noise = np.random.randn(256) / 4 \n",
        "y = 5 * x + 7 + noise \n",
        "\n",
        "x_train = x.reshape(-1, 1).astype('float32')\n",
        "y_train = y.reshape(-1, 1).astype('float32')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5tI1IZj2d6jQ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = nn.Linear(input_size, output_size)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Qubzpyr5eB6R",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.MSELoss()\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eeJuZuTTeKUS",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 280
        },
        "outputId": "0e3c04c9-dd23-4405-af48-893fdc3ee7d1"
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    inputs = torch.from_numpy(x_train)\n",
        "    targets = torch.from_numpy(y_train)\n",
        "\n",
        "    outputs = model(inputs)\n",
        "    loss = criterion(outputs, targets)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (epoch+1) % 200 == 0:\n",
        "        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))"
      ],
      "execution_count": 55,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [200/3000], Loss: 31.7279\n",
            "Epoch [400/3000], Loss: 11.2608\n",
            "Epoch [600/3000], Loss: 4.0279\n",
            "Epoch [800/3000], Loss: 1.4717\n",
            "Epoch [1000/3000], Loss: 0.5681\n",
            "Epoch [1200/3000], Loss: 0.2487\n",
            "Epoch [1400/3000], Loss: 0.1356\n",
            "Epoch [1600/3000], Loss: 0.0954\n",
            "Epoch [1800/3000], Loss: 0.0811\n",
            "Epoch [2000/3000], Loss: 0.0759\n",
            "Epoch [2200/3000], Loss: 0.0739\n",
            "Epoch [2400/3000], Loss: 0.0730\n",
            "Epoch [2600/3000], Loss: 0.0726\n",
            "Epoch [2800/3000], Loss: 0.0723\n",
            "Epoch [3000/3000], Loss: 0.0721\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "51uHvp_De5hx",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 286
        },
        "outputId": "3c65fbbf-21eb-45e2-bb4a-4bae25b05cb1"
      },
      "source": [
        "predicted = model(torch.from_numpy(x_train)).detach().numpy()\n",
        "plt.plot(x_train, y_train, 'bo', label='Orignial data', alpha=0.3)\n",
        "plt.plot(x_train, predicted, label='Fitted line')\n",
        "plt.legend()\n",
        "# plt.show()"
      ],
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7f7c6aeadb70>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 26
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JE8PTd1wfc0V",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "torch.save(model.state_dict(), 'model.ckpt')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tUFJhEJffvTA",
        "colab_type": "text"
      },
      "source": [
        "## 2、Linear Regression(2)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PPNbOzm2f0X3",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "import matplotlib.pyplot as plt \n",
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "413093d8E5OI",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_size = 1 \n",
        "output_size = 1 \n",
        "num_epochs = 3000 \n",
        "learning_rate = 0.001 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RWdvCpLNFOnE",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = np.random.rand(256)\n",
        "noise = np.random.randn(256) / 4 \n",
        "y = 5 * x + 7 + noise\n",
        "\n",
        "x_train = x.reshape(-1, 1).astype('float32')\n",
        "y_train = y.reshape(-1, 1).astype('float32')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8wgTTXabFz52",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = nn.Linear(input_size, output_size)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RC4aGFSCF8Dk",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.MSELoss()\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x4TazEtUGINu",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 544
        },
        "outputId": "5236d1a2-f90c-499a-ea38-087dd065f740"
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    inputs = torch.from_numpy(x_train)\n",
        "    targets = torch.from_numpy(y_train)\n",
        "\n",
        "    outputs = model(inputs)\n",
        "    loss = criterion(outputs, targets)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (epoch+1) % 100 == 0:\n",
        "        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [100/3000], Loss: 69.6482\n",
            "Epoch [200/3000], Loss: 42.2638\n",
            "Epoch [300/3000], Loss: 25.6701\n",
            "Epoch [400/3000], Loss: 15.6147\n",
            "Epoch [500/3000], Loss: 9.5209\n",
            "Epoch [600/3000], Loss: 5.8276\n",
            "Epoch [700/3000], Loss: 3.5889\n",
            "Epoch [800/3000], Loss: 2.2314\n",
            "Epoch [900/3000], Loss: 1.4081\n",
            "Epoch [1000/3000], Loss: 0.9083\n",
            "Epoch [1100/3000], Loss: 0.6047\n",
            "Epoch [1200/3000], Loss: 0.4199\n",
            "Epoch [1300/3000], Loss: 0.3071\n",
            "Epoch [1400/3000], Loss: 0.2380\n",
            "Epoch [1500/3000], Loss: 0.1954\n",
            "Epoch [1600/3000], Loss: 0.1688\n",
            "Epoch [1700/3000], Loss: 0.1520\n",
            "Epoch [1800/3000], Loss: 0.1412\n",
            "Epoch [1900/3000], Loss: 0.1339\n",
            "Epoch [2000/3000], Loss: 0.1288\n",
            "Epoch [2100/3000], Loss: 0.1251\n",
            "Epoch [2200/3000], Loss: 0.1223\n",
            "Epoch [2300/3000], Loss: 0.1199\n",
            "Epoch [2400/3000], Loss: 0.1179\n",
            "Epoch [2500/3000], Loss: 0.1161\n",
            "Epoch [2600/3000], Loss: 0.1145\n",
            "Epoch [2700/3000], Loss: 0.1130\n",
            "Epoch [2800/3000], Loss: 0.1115\n",
            "Epoch [2900/3000], Loss: 0.1101\n",
            "Epoch [3000/3000], Loss: 0.1088\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SHb_81KSG3-W",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 286
        },
        "outputId": "cbf83876-6da3-4722-b0b2-259a22b723ec"
      },
      "source": [
        "predicted = model(torch.from_numpy(x_train)).detach().numpy()\n",
        "plt.plot(x_train, y_train, 'bo', label='Original data', alpha=0.3)\n",
        "plt.plot(x_train, predicted, label='Fitted line')\n",
        "plt.legend()\n",
        "plt.plot()"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nGMZL+P+1XF63RVsO8gAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wZP7fSxTHgMm",
        "colab_type": "text"
      },
      "source": [
        "## 3、Linear Regression(3)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LW7Fe2ZsHpu8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "import matplotlib.pyplot as plt \n",
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tBbaUDbGH20r",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_size = 1 \n",
        "output_size = 1 \n",
        "num_epochs = 3000 \n",
        "learning_rate = 0.01 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "O-K65xpkIH4E",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = np.random.rand(256)\n",
        "noise = np.random.randn(256) / 4 \n",
        "y = 5 * x + 7 + noise \n",
        "\n",
        "x_train = x.reshape(-1, 1).astype('float32')\n",
        "y_train = y.reshape(-1, 1).astype('float32')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0BXqeqn3Io4d",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = nn.Linear(input_size, output_size)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2tW8WPq1Iubf",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.MSELoss()\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Q5wcxWvDJKb9",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 544
        },
        "outputId": "48c24593-100a-4b47-c525-a0194c85831e"
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    inputs = torch.from_numpy(x_train)\n",
        "    targets = torch.from_numpy(y_train)\n",
        "\n",
        "    outputs = model(inputs)\n",
        "    loss = criterion(outputs, targets)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (epoch+1) % 100 == 0:\n",
        "        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))        "
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [100/3000], Loss: 0.1034\n",
            "Epoch [200/3000], Loss: 0.0953\n",
            "Epoch [300/3000], Loss: 0.0888\n",
            "Epoch [400/3000], Loss: 0.0837\n",
            "Epoch [500/3000], Loss: 0.0796\n",
            "Epoch [600/3000], Loss: 0.0764\n",
            "Epoch [700/3000], Loss: 0.0738\n",
            "Epoch [800/3000], Loss: 0.0717\n",
            "Epoch [900/3000], Loss: 0.0701\n",
            "Epoch [1000/3000], Loss: 0.0688\n",
            "Epoch [1100/3000], Loss: 0.0678\n",
            "Epoch [1200/3000], Loss: 0.0669\n",
            "Epoch [1300/3000], Loss: 0.0663\n",
            "Epoch [1400/3000], Loss: 0.0658\n",
            "Epoch [1500/3000], Loss: 0.0654\n",
            "Epoch [1600/3000], Loss: 0.0650\n",
            "Epoch [1700/3000], Loss: 0.0648\n",
            "Epoch [1800/3000], Loss: 0.0646\n",
            "Epoch [1900/3000], Loss: 0.0644\n",
            "Epoch [2000/3000], Loss: 0.0643\n",
            "Epoch [2100/3000], Loss: 0.0642\n",
            "Epoch [2200/3000], Loss: 0.0641\n",
            "Epoch [2300/3000], Loss: 0.0640\n",
            "Epoch [2400/3000], Loss: 0.0640\n",
            "Epoch [2500/3000], Loss: 0.0639\n",
            "Epoch [2600/3000], Loss: 0.0639\n",
            "Epoch [2700/3000], Loss: 0.0639\n",
            "Epoch [2800/3000], Loss: 0.0638\n",
            "Epoch [2900/3000], Loss: 0.0638\n",
            "Epoch [3000/3000], Loss: 0.0638\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8gVMlrWzKnnw",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 286
        },
        "outputId": "ec9e179d-ea07-407b-9d5f-493819157fc7"
      },
      "source": [
        "predicted = model(torch.from_numpy(x_train)).detach().numpy()\n",
        "plt.plot(x_train, y_train, 'bo', label='Original data', alpha=0.3)\n",
        "plt.plot(x_train, predicted, label='Fitted line')\n",
        "plt.legend()\n",
        "plt.plot()"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HVWC-cXZL-_W",
        "colab_type": "text"
      },
      "source": [
        "## 4、Linear Regression(4)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gCVU6pJ8ajGd",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "import matplotlib.pyplot as plt \n",
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xn5r3R7Qa7UK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_size = 1 \n",
        "output_size = 1 \n",
        "num_epochs = 3000 \n",
        "learning_rate = 0.001 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zsNS8JA4bdFF",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = np.random.rand(256)\n",
        "noise = np.random.randn(256) / 4 \n",
        "y = 5 * x + 7 + noise \n",
        "\n",
        "x_train = x.reshape(-1, 1).astype('float32')\n",
        "y_train = y.reshape(-1, 1).astype('float32')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3GN_njFiby1Y",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = nn.Linear(input_size, output_size)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yzCWJkdccAXM",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.MSELoss()\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TGfU-4h8cNjS",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 280
        },
        "outputId": "18f277a5-fcb1-4e93-aee4-f4249891d835"
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    inputs = torch.from_numpy(x_train)\n",
        "    targets = torch.from_numpy(y_train)\n",
        "\n",
        "    outputs = model(inputs)\n",
        "    loss = criterion(outputs, targets)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (epoch+1) % 200 == 0:\n",
        "        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [200/3000], Loss: 0.1010\n",
            "Epoch [400/3000], Loss: 0.0990\n",
            "Epoch [600/3000], Loss: 0.0971\n",
            "Epoch [800/3000], Loss: 0.0953\n",
            "Epoch [1000/3000], Loss: 0.0935\n",
            "Epoch [1200/3000], Loss: 0.0919\n",
            "Epoch [1400/3000], Loss: 0.0903\n",
            "Epoch [1600/3000], Loss: 0.0888\n",
            "Epoch [1800/3000], Loss: 0.0874\n",
            "Epoch [2000/3000], Loss: 0.0860\n",
            "Epoch [2200/3000], Loss: 0.0847\n",
            "Epoch [2400/3000], Loss: 0.0834\n",
            "Epoch [2600/3000], Loss: 0.0823\n",
            "Epoch [2800/3000], Loss: 0.0811\n",
            "Epoch [3000/3000], Loss: 0.0800\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rdXG9hBod0Ez",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "9bb7702d-b5ab-4fde-bda5-b2cc5cce260b"
      },
      "source": [
        "[w, b] = model.parameters()\n",
        "print(w.item(), b.item())"
      ],
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "4.524659156799316 7.253968715667725\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d_hgXJ9leIY8",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 269
        },
        "outputId": "2eb2a266-5d3b-4002-ad2a-c74a1a44b698"
      },
      "source": [
        "predicted = model(torch.from_numpy(x_train)).detach().numpy()\n",
        "plt.plot(x_train, y_train, 'bo', label='Original data', alpha=0.3)\n",
        "plt.plot(x_train, predicted, label='Fitted line')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 65,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wYRg5OHTgVhC",
        "colab_type": "text"
      },
      "source": [
        "## 5、Linear Regression(5)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zB8e1gHzgev6",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch \n",
        "import torch.nn as nn \n",
        "import numpy as np \n",
        "import matplotlib.pyplot as plt \n",
        "%matplotlib inline "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YXTN-G1xgrGz",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_size = 1 \n",
        "output_size = 1 \n",
        "num_epochs = 3000 \n",
        "learning_rate = 0.001 "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DVd-2ycpgyxa",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = np.random.rand(256)\n",
        "noise = np.random.randn(256) / 4 \n",
        "y = 5 * x + 7 + noise \n",
        "\n",
        "x_train = x.reshape(-1, 1).astype('float32')\n",
        "y_train = y.reshape(-1, 1).astype('float32')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "apo8A3smhIIz",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model = nn.Linear(input_size, output_size)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dhoHGtsyhNYL",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "criterion = nn.MSELoss()\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKFKXlw3hXPN",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 280
        },
        "outputId": "7a64d5f6-4844-41d8-e958-322626b026b0"
      },
      "source": [
        "for epoch in range(num_epochs):\n",
        "    inputs = torch.from_numpy(x_train)\n",
        "    targets = torch.from_numpy(y_train)\n",
        "\n",
        "    outputs = model(inputs)\n",
        "    loss = criterion(outputs, targets)\n",
        "\n",
        "    optimizer.zero_grad()\n",
        "    loss.backward()\n",
        "    optimizer.step()\n",
        "\n",
        "    if (epoch+1) % 200 == 0:\n",
        "        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))"
      ],
      "execution_count": 74,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch [200/3000], Loss: 0.0929\n",
            "Epoch [400/3000], Loss: 0.0920\n",
            "Epoch [600/3000], Loss: 0.0911\n",
            "Epoch [800/3000], Loss: 0.0903\n",
            "Epoch [1000/3000], Loss: 0.0895\n",
            "Epoch [1200/3000], Loss: 0.0887\n",
            "Epoch [1400/3000], Loss: 0.0880\n",
            "Epoch [1600/3000], Loss: 0.0873\n",
            "Epoch [1800/3000], Loss: 0.0867\n",
            "Epoch [2000/3000], Loss: 0.0861\n",
            "Epoch [2200/3000], Loss: 0.0855\n",
            "Epoch [2400/3000], Loss: 0.0850\n",
            "Epoch [2600/3000], Loss: 0.0844\n",
            "Epoch [2800/3000], Loss: 0.0839\n",
            "Epoch [3000/3000], Loss: 0.0835\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "25WNx5BOikJN",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "63c3e4e0-a962-407f-a58f-21cfa663f429"
      },
      "source": [
        "[w, b] = model.parameters()\n",
        "print(w.item(), b.item())"
      ],
      "execution_count": 75,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "4.710653305053711 7.150494575500488\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0jbZQjY4izwR",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 269
        },
        "outputId": "8fce35bf-82af-4869-9680-c149754347f6"
      },
      "source": [
        "predicted = model(torch.from_numpy(x_train)).detach().numpy()\n",
        "plt.plot(x_train, y_train, 'bo', label='Original data', alpha=0.3)\n",
        "plt.plot(x_train, predicted, label='Fitted line')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 76,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nw0wS/j8G701/xmTtYQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "N1pE2sKVjJ_-",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}